"""
社区管理系统安装脚本
Community Management System Setup Script
"""
import os
import subprocess
import sys


def install_requirements():
    """安装项目依赖"""
    print("📦 安装项目依赖...")
    
    try:
        subprocess.check_call([sys.executable, '-m', 'pip', 'install', '-r', 'requirements.txt'])
        print("✅ 依赖安装完成")
        return True
    except subprocess.CalledProcessError as e:
        print(f"❌ 依赖安装失败: {e}")
        return False


def setup_database():
    """设置数据库"""
    print("\n🗄️ 设置数据库...")
    
    print("请确保:")
    print("1. MySQL服务已启动")
    print("2. 已执行SQL脚本创建数据库和表")
    print("3. 数据库连接信息正确")
    
    choice = input("\n数据库已准备好了吗？(y/N): ").lower()
    
    if choice in ['y', 'yes']:
        try:
            # 运行数据库迁移
            subprocess.check_call([sys.executable, 'manage.py', 'makemigrations'])
            subprocess.check_call([sys.executable, 'manage.py', 'migrate'])
            print("✅ 数据库设置完成")
            return True
        except subprocess.CalledProcessError as e:
            print(f"❌ 数据库设置失败: {e}")
            return False
    else:
        print("请先准备数据库再运行此脚本")
        return False


def collect_static():
    """收集静态文件"""
    print("\n📦 收集静态文件...")
    
    try:
        subprocess.check_call([sys.executable, 'manage.py', 'collectstatic', '--noinput'])
        print("✅ 静态文件收集完成")
        return True
    except subprocess.CalledProcessError as e:
        print(f"❌ 静态文件收集失败: {e}")
        return False


def main():
    """主安装流程"""
    print("""
╭─────────────────────────────────────────╮
│        🏢 社区管理系统 🏢               │
│      Community Management System       │
│                                         │
│         项目安装向导                    │
╰─────────────────────────────────────────╯
    """)
    
    # 安装依赖
    if not install_requirements():
        print("\n安装失败，请检查错误信息")
        sys.exit(1)
    
    # 设置数据库
    if not setup_database():
        print("\n数据库设置失败，请检查配置")
        sys.exit(1)
    
    # 收集静态文件
    collect_static()
    
    print("\n🎉 项目安装完成！")
    print("\n下一步:")
    print("1. 运行 'python run.py' 启动服务器")
    print("2. 访问 http://127.0.0.1:8000")
    print("3. 使用测试账号登录体验功能")


if __name__ == '__main__':
    main()
